home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 5 / The 640 Meg Shareware Studio CD-ROM Volume V (Data Express)(1994).ISO / amiga / sers225.lha / SerServer.doc < prev    next >
Text File  |  1994-04-19  |  40KB  |  949 lines

  1. ***************************************************************************
  2. *                                                                         *
  3. *                      SerServer, Sysop & Con1-Handler                    *
  4. *                                                                         *
  5. *             All parts (c) Copyright 1993 by Michael R. Mossman.         *
  6. *                                                                         *
  7. *                Released for private, non-commercial use.                *
  8. *                                                                         *
  9. *                         Compiled with SAS 6.51.                         *
  10. *                                                                         *
  11. ***************************************************************************
  12.  
  13.  
  14. What is it?
  15.  
  16.        Maybe a better name would have been CliBBS, but I started with
  17. SerServer and so it will stay. It is a personal (with the lack of a better
  18. word) BBS program. It gives the user a full CLI with restrictions setup by
  19. the sysop. I don't like the word BBS in this case, because, any program
  20. that offers a CLI to strangers, can be a lot of trouble. I wrote the
  21. program so that I can log on to my computer from work and do all of the
  22. things that I do from home in a CLI. I do not recommend that you let any
  23. Tom, Dick or Harry in to use this program. You will end up with formatted
  24. hard drives and sleepless nights. It has twenty-six user levels, and full 
  25. Zmodem UP/DOWNLOAD. It could be a very useful program for a few friends
  26. and your self to use, when working on a common project. A place to share
  27. files. It offers limited message sending and receiving. A full screen ANSI
  28. editor can be used for remote programming.
  29.  
  30. What files are in the zoo?
  31.  
  32.        Con1-Handler   - this is the DOS handler for the CLI.
  33.  
  34.        SerServer      - this is the serial device interface and 
  35.                         it talks to Con1-Handler.
  36.  
  37.        SSEmacs        - this is the full screen ANSI editor.
  38.  
  39.        SSEmacs.cmds   - text file of Emacs commands.
  40.  
  41.        SySop          - This program configures the "BBS" and 
  42.                         maintains the user/password list.
  43.        
  44.        SSscript       - A example script file that is used in
  45.                         Sysop program to configure SerServer.             
  46.  
  47.        SShelp         - This is just a text file that you edit,
  48.                         to tell users what commands and devices,
  49.                         are available to them.
  50.  
  51.        SSlogon        - Another text file that the user gets 
  52.                         before they enter their name and 
  53.                         password.
  54.  
  55.        SSgreeting     - Another text file that the user gets 
  56.                         after login.
  57.  
  58.        SSlogoff       - Another text file that the user gets 
  59.                         during logoff.
  60.  
  61.        mountlist      - This shows how to enter the Con1-Handler
  62.                         in your mountlist.
  63.                         
  64.        Mail           - A subdirectory where the mail goes.         
  65.                         
  66.        Man            - A subdirectory containing help files for
  67.                         online users.          
  68.  
  69.        Xprzmodem.library - This library does the Zmodem send and receive
  70.                         functions for SerServer.
  71.  
  72.  
  73. Setting it up!
  74.  
  75.  
  76.        A sample of the config file, looks like this;
  77.  
  78.  
  79. [R] Reconfigure   ~~~~~~~~~~~~~  Configuration  ~~~~~~~~~~~~~
  80.     Home Device      : vd0:
  81.     Modem String     : ATE0 Q0 V1 &D2 &C1 S0=0
  82.  
  83.     Script Path/File : SSbbs:SSscript
  84.     Check Carrier    : 1
  85.     Terminate        : 0
  86.     Lock BaudRate    : 0
  87.     Modem Uses &D2   : 1
  88.     Max Baud         : 2400
  89.     Upload Level     : 2
  90.     Download Level   : 1
  91.  
  92. [1] Commands         : 20
  93.  
  94. [2] Devices          : 6
  95.  
  96.  
  97. The Home Device
  98.  
  99. There must be one device that is common to all level users. This is called
  100. the "HOME DIRECTORY DEVICE". The root of this device is where all level of
  101. users will start from when they log on. It is also the area that all
  102. uploads and downloads take place. A file must be moved here, before it can
  103. be sent. Received files will arrive here.
  104.  
  105.  
  106. The Modem String
  107.  
  108. The modem string has to be just right for this program to work. I use ATE0
  109. L0 M1 Q0 V1 &D2 on a Supra 2400. I will explain each entry in case your
  110. modem is not a Supra.
  111.  
  112.           E0 - Modem does not echo back commands (this is 
  113.                important.
  114.  
  115.           L0 - Low speaker volume (does not matter).
  116.  
  117.           M1 - Speaker on until carrier received (does not 
  118.                matter).
  119.  
  120.           Q0 - Modem returns result codes after commands (this 
  121.                is important).
  122.  
  123.           V1 - Selects Verbal result codes (this is important).
  124.  
  125.          &D2 - Modem hangs up, disables autoanswer, and goes to
  126.                command state upon ON-to-OFF transition of DTR 
  127.                line (this is important).
  128.  
  129.          &C1 - DCD ON indicates a data carrier from the remote modem
  130.                (this is important).
  131.  
  132.  DO NOT PUT THE MODEM IN THE AUTOANSWER MODE eg. ATS0=1.
  133.  
  134.  
  135. Script Path/File
  136.  
  137. Set up a script file that will be run by CLI that the user is in. The path
  138. and file name will be entered into the config file. A sample of this file
  139. is provided later on in the docs. You must have this file!!!!
  140.  
  141.  
  142. Check Carrier
  143.  
  144. This switch can be set to 0 or 1. This switch tells SerServer if you want
  145. the carrier detect line checked. In normal operation, this would be set to
  146. 1. When a user hangs up or something happens to the phone connection,
  147. SerServer will reset if this switch is 1. If you wanted to set up SerServer
  148. on a seven wire hardware interface between two computers without wiring the
  149. carrier detect line, this could be set to 0.
  150.  
  151.  
  152. Terminate
  153.  
  154. This switch can be set to 0 or 1. If you want SerServer to run as a stand
  155. alone program and recycle when a user logs off, then set this switch to 0.
  156. If you want to launch SerServer from another program, like a BBS or a FIDO
  157. frontend (WelMat or TrapDoor), then set this switch to 1. Serserver will
  158. then terminate, and return to the calling program, when a user logs off. In
  159. this configuration, SerServer will not do any modem handling. It will drop
  160. the DTR line if it detects buffer dumps or user problems, but always
  161. returns to the calling program with the DTR high.
  162.  
  163.  
  164. Lock BaudRate
  165.  
  166. This switch can be set to 0 or 1. With normal modems this will be set to 0
  167. (eg. - Supra 2400).  With high speed modems (eg. - HST Dual Standard), you
  168. can set a fixed baud rate between the computer and modem and a variable
  169. line baud rate. This is called "locked baud" and can be used by SerServer
  170. if this switch is set to 1.
  171.  
  172.  
  173. Modem Uses &D2
  174.  
  175. This switch can be set to 0 or 1. If your modem supports &D2 or a like
  176. function (described above), then set this switch to 1.  If your modem does
  177. not support this function, then you can set this switch to 0. SerServer
  178. will then try to send commands to the modem via the "+++" escape sequence.
  179. It will also try to hangup by sending a "+++ATH0". SerServer has more
  180. control if the modem uses the &D2 command.
  181.  
  182.  
  183. Max Baud
  184.  
  185. This is the maximum baud rate of your modem or the locked baud rate if the
  186. "Lock BaudRate" switch is set 1.
  187.  
  188.  
  189. Upload Level
  190.  
  191. This is the level of user that can upload to your system (this is much more
  192. dangerous then downloading and should require a higher level). If you
  193. select a level of 'z' for up/downloading, then no level user will be able
  194. to send or receive files.
  195.  
  196.  
  197. Download Level
  198.  
  199. This is the same as above, but is the level required for downloading.
  200.  
  201.  
  202. Level 'a' - 'z' Commands
  203.  
  204. These are the DOS commands that the different level users can execute.
  205. Choose wisely! (Format seems to be a bad choice.) Commands that open their
  206. own window should not be used, because most of them will not return control
  207. to the CLI and the remote user can not close the window. You might ask, why
  208. twenty-six levels? I find that I can trust some people more then others.
  209. You might loan your Corvette to some friends and the Volkeswagon to others.
  210.  
  211. The parser works this way;
  212.  
  213.     First it looks at the command and if it is allowed, then;
  214.         It looks at, if command options are allowed. If allowed then;
  215.              It looks at the device name. If allowed then;
  216.                  Execute the command string.
  217.                  
  218.     If any of the above tests fail, then the command string will
  219.     not execute.        
  220.                  
  221.                  
  222.    command          - any program that can be executed by the CPU.
  223.    command options  - any string after the command name.
  224.    device           - any allowed DOS device with a file system.
  225.                
  226.  
  227. So if the user types "dir hd0:" and the command and device are allowed
  228. but options are not allowed then this command will not execute.
  229.  
  230. Now if the above user is allowed the command "cd" with options then
  231. they can "cd hd0:" and type "dir" and get a directory.
  232.  
  233.  
  234. Command Interactive Switch - If you have a program that requires user
  235.                              input/output, then you can set a level
  236.                              [a-y] that is required to use that command
  237.                              in the interactive mode. This will turn
  238.                              off parsing by SerServer. Parsing can turned 
  239.                              off for just the command or the command
  240.                              with options. If this command is not
  241.                              interactive, then set this level to 'z', so 
  242.                              that the parser is not turned off. If the 
  243.                              program requires just the command name to run
  244.                              (no options), then set this level to the
  245.                              same level as you set for the command.
  246.                              If it requires options, then set it to the
  247.                              same level as the options level is set.
  248.  
  249.  
  250. NOTES: A lot of DOS commands will go into an interactive mode if you
  251.        type "command ?" eg.- "status ?". SerServer will parse for this
  252.        option switch and not allow the command. If you want your users to 
  253.        be able to use this switch, then turn the interactive mode
  254.        on for this command or set up a seperate help file for each
  255.        command. The "?" option is dangerous. The user can sit there all
  256.        day at the interactive input and the command will not time out and
  257.        it will not exit with a CTRL BREAK from SerServer. Also look
  258.        out for "DIR" with options. The "DIR inter" command will cause
  259.        SerServer to lockup if you allow options and you do not allow
  260.        the interactive mode for this command. It is best to allow no
  261.        options with "DIR". 
  262.  
  263.  
  264. NOTES TO PROGRAMMERS: If you are writing programs to run with SerServer
  265.                       there are three things to note.
  266.                       
  267.                       1) Do cleanup and exit on reception of the 
  268.                          CTRL BREAK from the user or SerServer.
  269.                          
  270.                       2) Do timed inputs from the user. If there is
  271.                          no input from the user after, say 2 min,
  272.                          then cleanup and exit.
  273.                          
  274.                       3) Neither the handler or SerServer is 
  275.                          configured to use the raw mode at this time.
  276.                          I have installed the hooks but have not
  277.                          tested or used them yet.        
  278.  
  279.  
  280. Level 'a' - 'z' Devices
  281.  
  282. These are the devices (eg.- ram:, df0:, vd0: etc.) that are available to
  283. the user levels. Think very carefully about what devices you select.
  284. (I try to keep people off my hard drives.)
  285.  
  286.  
  287.  
  288. Now make a mountlist entry for the Con1-Handler. (A sample of this is
  289. included in the lharc.) Make a directory somewhere called "SSbbs". Then
  290. assign it, eg. - assign SSbbs: device:subdirectory/SSbbs. Create a 
  291. subdirectory off of SSbbs: and call it "mail".  
  292. Now execute Sysop and select "R" for configure. It will put a file in the
  293. assigned SSBBS: subdirectory called SSconfig. Enter the previous well
  294. thought out data. Now move SerServer, Sysop, SSlogon, SSEmacs, SShelp,
  295. SSlogoff, and SSgreeting into the assigned SSBBS: subdirectory (the text
  296. files, SShelp, SSgreeting SSlogoff and SSlogon, do not have
  297. to be present for SerServer to work). Copy xprzmodem.library into the Libs:
  298. subdirectory. Copy Con1-Handler into the L: subdirectory. The DOS commands
  299. copy, cd, newcli, mount, run and endcli, must be in the C: subdirectory.
  300. Use Sysop to enter yourself and who ever, in the userlist. This will
  301. create a file called SSpasswords in the assigned SSBBS: subdirectory.
  302. Make sure that the sysop is the first entry in the password file and
  303. and has a user level of 'z'. Remember the password! You will be asked for
  304. this password every time you run this program to make changes. The program
  305. does this to prevent someone from uploading the file to the BBS and making
  306. changes to the config or passwords. The program also writes to the log 
  307. if you fail the password.
  308.  
  309. Now do the following:
  310.  
  311. cd SSBBS:
  312. SerServer
  313.  
  314.  
  315. Now the program is up and running and ready for someone to logon. The text
  316. that is received from the Con1-Handler and the serial device is send to the
  317. CLI window that serserver is started up from. The program can be terminated
  318. by selecting the CLI window and typing Control C. People logging on should
  319. set their terminal programs for 8N1.
  320.  
  321.  
  322. Commands
  323.  
  324. SerServer will parse the command line for level 'a'-'y' users. If a user
  325. types "df0:dir" then the parser will eliminate the "df0:" and only "dir"
  326. will be sent to CLI (this assumes that dir is an allowed command). This
  327. along with alias (as shown later) will prevent users from renaming files
  328. (to an allowed command name) and then uploading and executing them.
  329. Commands that should not be allowed to level 'a'-'y' users are execute,
  330. alias, assign, protect, endcli, format and dir inter. If you use alias
  331. to force the user to use a command in the 'C:' subdirectory and you are
  332. running under WB 2.0 >, then you can add the commands from WB 1.3 to
  333. the 'C:' subdirectory to replace the resident ones. 
  334.  
  335.  
  336. Help
  337.  
  338. A user can type "help" or "?" along the command line and get a help file
  339. if the Sysop provides a text file called "help".
  340.  
  341.  
  342. Mail
  343.  
  344. At a CLI prompt a user can type "mail" and they can leave private or public
  345. mail. Private mail is created in a file under the users name (the name of
  346. the user who is to receive the mail). Private mail will be deleted after it
  347. is read by the user. Public mail is put in a file called "ALL". It will
  348. grow in size until the sysop either deletes it or edits it. (Some text
  349. editors can handle this file.) All messages are saved in "SSbbs:mail/". 
  350.  
  351.  
  352. Editor
  353.  
  354. SSEmacs is a full screen ANSI editor. The name of this command is
  355. "editor" and not "SSEmacs". The command "editor" will call the program 
  356. "SSEmacs". Do not rename "SSEmacs" to "editor". It is can be used by users
  357. if the sysop has configured it as an allowed command and the file is on an 
  358. allowed device. So if you wanted 'g' level users to have access to the
  359. editor, then you would set the command level to 'g' and the command options
  360. to level 'g' and the interactive level to 'z' (I know that the 
  361. interactive level is strange for this one - just trust me.) To use the
  362. editor from remote, you must be using an ANSI terminal program.
  363. To use the editor, type "editor" or "editor filepath". The FULL path must
  364. be given for the file. You can get help for the editor when in it,
  365. by hitting CTRL-C. The editor will wait 5 mins for something to be typed.
  366. If a key is not pressed in that time, the editor will terminate back to
  367. SerServer without saving the file. It will also terminate without saving
  368. on loss of carrier. So save often!
  369.  
  370. WARNING: When the user is in the editor, they can edit any file on the
  371.          system. Only allow this command to very trusted users.
  372.  
  373. SSEmacs is an adapted version of uEmacs from Fish Disk #6. I have tried
  374. some of it's features but I leave it up to you to find it's bugs. Then
  375. tell the original programmer! Many thanks go to Thomas J. Eshelman for
  376. the idea of a remote editor and then the help in getting it. If your
  377. friend had not uploaded the source, SerServer would not have an editor. 
  378.  
  379.  
  380. Logoff
  381.  
  382. To leave the system from remote, just type "logoff" along the  command line.
  383.  
  384.  
  385. MultiPort Serial Cards
  386.  
  387. SerServer will now use most multiport serial cards. I have added support
  388. for cards that do not have DTR control built into the device driver.
  389. I feel that all cards should have DTR control because it affords
  390. software more control over what the remote user is doing. This is how
  391. to call SerServer with different device drivers and ports. 
  392.  
  393.     SerServer siosbx.device 0    <or>
  394.     SerServer gvpser.device 1    <or>
  395.     SerServer serial.device 0    <will also work for the normal device>   
  396.  
  397.  This is done when SerServer is started up or in the script file. 
  398.  
  399.  
  400. Command History
  401.  
  402. The remote user can access a ten command history by typing CTRL-R at the
  403. remote terminal.
  404.  
  405.  
  406. Chat
  407.  
  408. This version of SerServer has a chat mode (in the menu bar). It can only be
  409. entered when the user is waiting on the command line. There is no paging of
  410. the sysop from the users end. This does not prevent you from adding a CLI
  411. command to sound a bell or flash the screen. To terminate chat, the Sysop
  412. types a "*" while in the chat mode.
  413.  
  414.  
  415. Intuition Thingies
  416.  
  417. I have added some menu items to SerServer. SerServer steals the DOS window,
  418. and adds a menu and title to it. It also changes the window to raw mode, to
  419. prevent you from typing into it (like I have often done). Serserver will
  420. not start up if there is not a window to put output to. Do not try to run
  421. it as a background task. 
  422.  
  423. Things to think about!
  424.  
  425. Level 'z' is the highest level user. There is no parsing of the command
  426. line for a level 'z' user. If format is in the command path and a level 'z'
  427. user says "format drive DH0: name NOTHING" then your brand new hard drive
  428. will erase it's brains. The same thing can happen with any level user,
  429. if you make the command available to them. If you make Alias available as a
  430. command then users can do things like "alias dir format" and type "dir
  431. drive DH0: name NOTHING" and format your hard drive if DH0: is one of the
  432. available devices and dir is an allowed command.
  433.  
  434. How about if you make zoo an available command and a user puts format
  435. renamed as dir in the zoo. They can then de-zoo the file and format your
  436. hard drive because the CLI will find dir command in the current path
  437. (really format) before it goes to c:.
  438.  
  439. Endcli will terminate SerServer from a remote. I felt that this was handy
  440. for the sysop to drop the program from a remote terminal but can be a
  441. problem, if it is an allowed command. What I'm trying to say is, pick your
  442. commands and devices carefully. And most important, know who the hell your
  443. letting on your computer! 
  444.  
  445.  
  446. Timings and Stuff
  447.  
  448. Anyone is allowed one minute to type in their name at the login prompt,
  449. another minute for the password. Everyone is allowed three tries and then
  450. it hangs up. Level 'a' - level 'y' users are allowed two minutes of
  451. inactivity at a CLI prompt before the program drops them. Level 'z' users
  452. can be at a CLI all day and do nothing and the program will not hang up.
  453. In the Mail section of the program, time outs will happen to any level user.
  454. There is no limit to the over all on time for any level user as long as
  455. they are doing something. 
  456.  
  457.  
  458. Log Keeping
  459.  
  460. The program keeps a log in the SSBBS: subdirectory called "SSlog'. This 
  461. requires that BBS disk NOT be write protected. It also creates two
  462. environmental variables called "SSName" and "SSLevel" if "ENV:" has
  463. been assigned. These are deleted when the user logs off.
  464.  
  465.  
  466. Zmodem Stuff
  467.  
  468. The program uses Zmodem for up/downloads. Sending from a remote is easy. I
  469. used Online!, Telix and JrComm for testing. Just select 32 bit CRC and at a
  470. CLI prompt in the BBS, select upload in Online!, JrComm, or Telix. Pick the
  471. files and then sit back and wait (have a beer)
  472. till they all arrive at the BBS.
  473.  
  474. Sending files requires a little more work. First the files have to be in the
  475. "HOME DIRECTORY DEVICE" root. Use copy to move them there. Then along the
  476. CLI prompt line type:
  477.  
  478.      send file1 file2 file3 (etc)
  479.  
  480.  Make sure your terminal program is setup for auto downloads.
  481.  
  482.  
  483. Neet Things
  484.  
  485. There are some neet things that you can do with Alias. It can provide a
  486. whole bunch of extra commands this way. Say you want users to be able to
  487. read the log file but don't want them to have access to Df0: where the
  488. SSbbs: files are kept. You can then set up an Alias that reads like this:
  489.  
  490.       Alias log type SSbbs:log
  491.  
  492. You then add log as a command to the Sysop program, and users can read the
  493. log file. Say you have a bunch of users that don't know dos commands. You
  494. can add help files for each allowed command by doing something like this.
  495. Create a subdirectory off SSbbs: called "help". Then put a text file in
  496. there called "dir". This text file will explain the "Dir" command and it's
  497. options. Then set up an Alias like this:
  498.  
  499.      Alias Man type SSbbs:Man/[] 
  500.  
  501. The user then types "Man dir" and gets a help file on "Dir". "Man" has to
  502. be added to the allowed commands. 
  503.  
  504.  
  505. Scripts
  506.  
  507. Here are a couple example scripts to show you how to set up the the BBS and
  508. use the alias command.
  509.  
  510. assign SSbbs: df0:SSbbs
  511. stack 10000
  512. SSbbs:serserver
  513. endcli
  514.  
  515.  
  516. And here is the remote-shell script. (Used in the config file)
  517.  
  518. stack 10000
  519. cd vd0:
  520. Prompt "(%N) %S>> 
  521. alias dir c:dir                  <---- You should have an entry like these
  522. alias list c:list                      for every allowed command. This
  523. alias type c:type                      helps prevent users uploading and
  524. alias echo c:echo                      and executing a file.
  525. alias copy copy [] NOPRO BUF=10  <---- allows copied protected files to be
  526.                                        deleted.
  527. alias log type SSbbs:log         <---- Gives the log to users.
  528. alias Man type SSbbs:Man/[]      <---- If you want help files.
  529.  
  530.  
  531. When you configure the system, you can say that HOME: is the "HOME 
  532. DIRECTORY DEVICE" and then assign it to any place that you want. This
  533. will save going into the SySop program to change it, just reassign it.
  534.  
  535.  
  536. NewCLI ?
  537.  
  538. When SerServer starts up, it executes the command "NewCLI Con1:". This gives
  539. the user a CLI, rather then a SHELL. If you want the features of a SHELL-Seg
  540. (alias command), then you should have the following line in your Startup
  541. -Sequence;
  542.  
  543.         resident CLI L:Shell-Seg SYSTEM pure add
  544.            ( This is not needed under WB 2.04+ )
  545.  
  546.  
  547. WelMat or TrapDoor
  548.  
  549. When you launch SerServer from either of these two programs or a BBS, you
  550. must have the SHARED bit set for the serial device. You do this in the
  551. config file for both of these programs. To call SerServer from these
  552. programs, you would have a line in their config file, that would look like
  553. this;
  554.  
  555.         SerServer SerialDevice UnitNumber %l
  556. where;
  557.        SerialDevice is serial.device or your serial device driver name.
  558.        UnitNumber   is 0 to 9, depending on the port you wish to use.
  559.        %l           is the connect baud rate (link rate) between the two
  560.                     modems.
  561.  
  562.  
  563. BBS Programs and the Likes Of
  564.  
  565. If your board can run doors or external up/download programs, then it
  566. probably can launch SerServer. The following are things to look for;
  567.  
  568.      1) The board can share the serial port.
  569.      2) The board stops receiving serial port I/O during the time SerServer
  570.         is running. A sign of this problem, is when the board receives one
  571.         charactor and SerServer gets the next. 
  572.      3) The command line for SerServer is the same for a BBS as FIDO fronted
  573.         program.
  574.  
  575. SerServer has been tested with the DLG Professional BBS program. This BBS
  576. uses a DOS handler much like the Con1: handler in SerServer and normally
  577. expects doing all of the serial device I/O. With the help of a couple of
  578. script files, these problems can be over come.
  579.  
  580.      echo >ram:SerServe.bat "failat 100*nstack 50000*ndlg:tfreeze -p tr0*n
  581.                 SSbbs:serserver serial.device 0*ndlg:tcont -p tr0*nendcli" 
  582.      newshell newcon:0/0/640/100/SerCli from ram:SerServe.bat
  583.      Wait 5
  584.      echo "Returning to the BBS..."
  585.  
  586. (Please Note....The above "Echo" command is all one line. It generates
  587. a script file in Ram:, that is execute by this script.)
  588.  
  589.  
  590. HST or Other Like High Speed Modems
  591.  
  592. SerServer should now be able to make any link rate connection. It
  593. parses the CONNECT XXXXX message from the modem and sets the serial
  594. port to that rate.
  595.  
  596.  
  597.  
  598.  
  599. Note to SerServer Version 2.23 Users
  600.  
  601. If you are running version 2.23 all ready, please transfer Con1-Handler,
  602. SerServer, Sysop, xprzmodem.library and SSEmacs to the correct directories.
  603. These are new versions and SerServer 2.25 will not work properly without
  604. these new files. Delete the old password and config file.
  605.  
  606.  
  607. Bugs and Other Critters of the Night
  608.  
  609. SerServer will not work with any of the Arp shells. The Con1-Handler wants
  610. to talk to a BCPL program, so use NewCLI, NewShell or WShell.
  611.  
  612.  
  613. SerServer has been tested under WorkBench 2.00
  614.  
  615. Well this is version 2.25, so what can I say. People doing buffer dumps and
  616. hanging up in the middle of things can always be a problem. I have tried to
  617. catch these problems, but bugs always seem to surface. I am releasing the
  618. executable but will retain the source on this one. Let me know if you find
  619. any problems. Please don't say it just locked up, try to tell me what the
  620. program was doing, when it locked up!
  621.  
  622.  
  623. Things to Do
  624.  
  625. Programs like this always have things that can be added. I have been asked
  626. to make SerServer into a BBS program. The answer is "NO!!". I wrote 
  627. SerServer as a remote slave CLI for people (me) who like to play on their
  628. Amiga when they are away using an (dirty word) IBM clone. It still has a 
  629. lot of rough edges but the the basic shell is getting stronger.
  630.  
  631. I add to this program every year and I feel that it is getting better. 
  632.  
  633.    1) I might enable the raw mode if an interactive program calls for
  634.       it.
  635.    2) I am considering adding an auto run script file for each user.
  636.       The script would run (if it is configured ) on logon, and then
  637.       it could terminate the user or they would drop to a DOS prompt.
  638.       Depending on how the sysop configured their user file.   
  639.  
  640. I program for me first and you last!!  
  641.  
  642.  
  643. CopyRight and Things
  644.  
  645. I am retaining the copyright on Con1-Handler and SerServer Version 2.25 but
  646. will release it's use to the public for non-commercial use.
  647.  
  648.  
  649. How To Rip Me Apart
  650.  
  651. You can also reach me on Fido Net @ 1:255/19 or you can write me,
  652.  
  653.                    Mike Mossman
  654.                    15 Kenneth Dr.
  655.                    Quispamsis, N.B.
  656.                    Canada  E2G 1J1 
  657.  
  658. Thanks
  659.  
  660. Many thanks to Wayne Marchand, Graeme Weir and the Mad Scientist for
  661. debugging and helpful comments. A real big thanks goes out to Mad for
  662. running SerServer under his DLG bbs. This found bugs, that would
  663. have taken years to find by using a term prog on my 500 and SerServer
  664. installed on my 2500.
  665.  
  666.  
  667. History
  668.  
  669.    Version 1.00 - Original alpha testing version. Not released to public.
  670.  
  671.    Version 1.01 - Fixed bug in dropped carrier lockup. Program was 
  672.                   waiting on timer message that never came. Fixed 
  673.               PassWordMaker so that it did not wreck the password 
  674.               file when editing user entries. Not released to public.
  675.  
  676.    Version 1.02 - Added log keeping and moved sz & rz into the C: 
  677.                   subdirectory from the "HOME DIRECTORY". Not released to
  678.                   the public.
  679.  
  680.    Version 1.03 - PassWordMaker was rewritten by The Mad Scientist and 
  681.                   called Sysop. Thanks a lot Doug! (call his BBS at
  682.               506-455-2808). Added the mail feature and caught a
  683.               few more bugs. Added Mail to the Sysop program so
  684.               the sysop can read his own mail (or anyone's). 
  685.                   Made level 1 and 2 users command line get parsed
  686.               so a path can not be set to a command. Password 
  687.                   protected the Sysop file. Released version.
  688.  
  689.    Version 1.04 - Added raw mode to the Con1-Handler. This is still not
  690.                   used but might be in future versions. Not released
  691.               to the public.
  692.  
  693.    Version 1.05 - Added intuition type stuff and chat mode. Not released 
  694.                   to the public.
  695.  
  696.    Version 1.06 - Added support for multiport serial cards. Only the 
  697.                   ASDG card is used now. Need docs on other cards, so    
  698.               I can set the DTR line. Not released to the public.
  699.  
  700.    Version 2.00 - This was a big one and figured that SerServer needed
  701.                   a new first number. A full screen ANSI editor was added
  702.                   with full serial driving routines. It's run with
  703.                   SerServer in the shared serial mode, like an external
  704.               protocol driver. Now I can program at work on my Amiga.
  705.                   Fixed a bug, where by the parser would allow the command
  706.                   "editor" pass when "edit" was an allowed command. If
  707.                   carrier is lost or dropped in the middle of a command like
  708.                   "dir dh0: all", SerServer will wait till it has received
  709.                   all of the command output from Con1: before it answers the
  710.                   phone. The same holds true if the sysop terminates the 
  711.                   program in the middle of this type of command. SerServer
  712.                   now sets the Process structure pr_WindowPtr to -1, so that
  713.                   requestors are not brought up by it. Fixed a bug in the 
  714.                   chat mode, so that if the carrier was dropped, the program
  715.                   reset properly. Released version.
  716.  
  717.      Version 2.10 Beta - Fixed a bug in the backspace, where by a user
  718.                   could backspace over the "Login" prompt and corrupt
  719.               memory.
  720.  
  721.                   Added a feature in the config file to prevent the
  722.                   checking of the carrier detect line. This allows the
  723.               program to be run over a seven wire hardware interface
  724.               (no modems).
  725.  
  726.               The serial device is now shared everywhere and a full
  727.               seven wire interface must be used between the serial port
  728.                   and modem.
  729.  
  730.                   SerServer now mounts the the Con1: handler and calls
  731.               "NewCLI Con1:".
  732.  
  733.                   The program will no longer attempt to send a file by
  734.               the name of "*", if requested by the remote user.
  735.  
  736.                   A ten line command history has been added. The remote
  737.               user can use this feature by typing CTRL-R at his
  738.               terminal.
  739.  
  740.                  SerServer now gives limited support to modems that
  741.              do not have the &D2 command. It will send the escape
  742.              sequence "+++" to the modem before it sends a modem
  743.              string. It will also try to hang up with an "ATH0"
  744.              command if the config program is told that the modem
  745.              does not support &D2. The best support is with modems    
  746.              that have the &D2 command.
  747.  
  748.              A "*" entered for the user level in the user file,
  749.              will give a message to a user logging on. The message
  750.              is "User Purged From Data Base" and drop them.
  751.  
  752.              SerServer will now terminate on user logoff and return
  753.              to a calling program if the terminate switch is set in
  754.              the config file. This allows BBS programs to run
  755.               SerServer as a door or SerServer to be called by a FIDO
  756.              front end. SerServer has been tested with TrapDoor and
  757.                  WelMat.
  758.  
  759.              Made the file reader run faster. It needed a little
  760.              speed.
  761.  
  762.                  Program now handles complex "CONNECT XXXX" messages from
  763.              HST modems.
  764.  
  765.              Corrected several timing problems which would lock up
  766.              the program.
  767.  
  768.                  Now purges the line after a connect is made. This is
  769.              to "quiet" the line.
  770.  
  771.              LockBaud mode added to config file for support of high
  772.              speed modems running in the locked mode.
  773.  
  774.              Made changes in the Con1-Handler and SerServer, so less
  775.              messages are being passed between them. This gets rid
  776.              of some overhead and possibility of errors.
  777.  
  778.              Better logging is done when problems happen.
  779.  
  780.              Reasons for startup problems are now sent to the Sysop
  781.              in the SerServer window.
  782.  
  783.              SerServer will open it's own window if the terminate
  784.              switch is set in the config file. This is to prevent
  785.              some possible conflicts with the program that launched
  786.              SerServer.
  787.  
  788.              All windows are now in the RAW: mode. This prevents
  789.              the program from locking up if the Sysop types into
  790.              the SerServer window.
  791.  
  792.              Beta release - Not released to the public.
  793.  
  794.   Version 2.20 - Found a bug that prevented SerServer from running in a
  795.                  dos script file. File redirection was incorrectly being
  796.                  done on closing.
  797.  
  798.                  CTRL-C action was changed to prevent the same code from
  799.                  being executed twice when CTRL-C was hit twice by the
  800.                  sysop.
  801.  
  802.                  Fixed problem in SS that caused a system crash if Con1:
  803.                  was not in the mount list.
  804.  
  805.                  Added a file read for log off time, called "logoff".
  806.  
  807.                  Sysop program now prevents incorrect values from being 
  808.                  entered for the switches (eg - terminate). Sysop will
  809.                  now prevent incorrect user levels from being entered.
  810.  
  811.                  SerServer now uses the xprzmodem.library. This allows 
  812.                  more control over the up/download when the carrier is 
  813.                  dropped etc. It has been tested with version 2.1 of this
  814.                  library. It will not work with version 2.0. The sysop
  815.                  can stop the file transfer by hitting the "ESC" key. 
  816.                  Many thanks to W.G.J. Langevel for the XPR concept and
  817.                  to Rick Huebner for the Zmodem library.
  818.  
  819.                  SerServer now supports the CTRL-D break from remote, to
  820.                  stop execution of a script file.
  821.  
  822.                  SerServer now intercepts three Intuition functions to
  823.                  prevent the CLI task from opening windows etc. The three
  824.                  functions are OpenWindow, OpenScreen, and AutoRequest.
  825.                  The code remains resident when SerServer terminates.
  826.                  It only effects the CLI coprocess that runs with Con1.
  827.                  All other processes function normally.
  828.  
  829.                  Added code to support the newser.device. This is a build
  830.                  your own multi-serial board type kit from "Amazing 
  831.                  Computing" and the parts can be purchased from "The
  832.                  Puzzle Factory, Inc" in Veneta, OR. I changed the device
  833.                  driver so that SerServer could control the DTR line. The
  834.                  executable and source are in a file called "NewSer.LZH".
  835.                  To see if you have the right version of device driver to
  836.                  work with SS, do a "type newser.device hex" on the
  837.                  executable, and the version number should be "1.1s".
  838.  
  839.                  Corrected a bug in the Con1-Handler where it would free
  840.                  memory twice when doing a "copy file-name to *".
  841.  
  842.   Version 2.21 - Fixed a small bug that prevented SS from running under 
  843.                  WB 2.04 in the non-terminate mode. Thanks to a nice
  844.                  fellow by the name of Dan Griffin for his help !!
  845.                
  846.                  SS will now only set the shared bit if it is open
  847.                  in the terminate mode. The Front End/BBS controls
  848.                  how the serial port is opened in the shared mode.
  849.  
  850.                  SS now controls the DTR line via the C= method, instead
  851.                  of a direct absolute address hit.
  852.  
  853.   Version 2.22 - Tried to let SerServer use the serial flag bits from 
  854.                  the program that called it (in the terminate mode).
  855.                  This does not seem to work with some programs. SS now
  856.                  opens the serial device in the shared mode, saves the
  857.                  old serial flag bits, sets them to values that SS needs
  858.                  and then  returns them to the previous values before
  859.                  closing.
  860.   
  861.   Version 2.23 - Worked on window opening. Should now work with NSTC,
  862.                  PAL and overscan in both modes.
  863.                  
  864.                - Fixed CTRL-C problem when used on DOS command from
  865.                  remote.
  866.                  
  867.                - Changed the data format for the SSpassword file so
  868.                  that SySop and SerServer are now using the same binary
  869.                  structure for this file.
  870.                  
  871.                - Recompiled under SAS 6.2
  872.                
  873.                - Worked on ZModem transfer screen so that it would allow
  874.                  faster transfers.
  875.                  
  876.                - Added more modem connect rates, so that SS will work better
  877.                  with high speed modems.
  878.                  
  879.                - Added version numbers to Sysop, SerServer and Con1-
  880.                  Handler. You should now be able to type "Version SerServer"
  881.                  and get it's version number.
  882.                  
  883.                - Renamed the SerServer directory to SSbbs: and all of the
  884.                  text and control files to SS-something. This is because
  885.                  the old bbs: directory was in conflict with some
  886.                  bbs programs. The SS-something identifies who the files
  887.                  belong to.
  888.  
  889.  
  890.   Version 2.24 - Added support for all multiport serial cards. I don't
  891.                  like the ATH0 method of droping users, it does not 
  892.                  render near as much control as lowering the DTR line.
  893.                  Oh....well, another hack!
  894.                  
  895.                - Changed the window style to reflect the above changes.
  896.  
  897.                - Added support for more modem connect rates.
  898.               
  899.                - Not released to the public.                 
  900.  
  901.  
  902.   Version 2.25 - Found a stack bug in the Con1 handler.
  903.  
  904.                - Added support in Con1 so that redirection can done
  905.                  to Con1 from another CLI. eg.- "copy s:startup-sequence 
  906.                  to Con1:". The file will be sent to the remote
  907.                  user and be displayed on the local screen. Redirection
  908.                  will not be done in the other way. eg.- "copy Con1:
  909.                  to ram:test".
  910.  
  911.                - Con1 will now tell SerServer when the previous 
  912.                  command has terminated.
  913.  
  914.                - Added multi command levels to Sysop and SerServer.
  915.                  SerServer will now parse for command, command options
  916.                  and devices.
  917.  
  918.                - Added command level support for the interactive mode.
  919.                  Now users can now write their own programs for  
  920.                  SerServer and receive user I/O.
  921.  
  922.                - SerServer will prevent user input to the CLI during
  923.                  CLI output, if the user is not a "z" level user or in
  924.                  the interactive mode.
  925.  
  926.                - Added another connect rate. I'm going to have to 
  927.                  automate this one.
  928.                  
  929.                - Fixed the above problem. Now SS will set the connect
  930.                  rate from the CONNECT XXXXX message.
  931.                  
  932.                - Parsed the "?" option if the command was not in 
  933.                  the interactive mode.     
  934.  
  935.                - Compiled under SAS 6.51.
  936.  
  937.                - Added menu items for the online users name and level.
  938.                
  939.                - Serserver will now send a CR to the handler and does
  940.                  not require a "SPACE"+"CR" to send the message. 
  941.  
  942.                - Added environment variables for the users name and
  943.                  level.
  944.  
  945.                - Now parse for the '*' device. SS will not allow the user
  946.                  to use this device unless they are in the interactive
  947.                  mode. eg.- The user can not type "copy * to ram:test"
  948.                  unless the interactive flag is set for the copy command.
  949.